/*
 * @Author: lll 1280388921@qq.com
 * @Date: 2025-04-20 22:13:41
 * @LastEditors: lll 1280388921@qq.com
 * @LastEditTime: 2025-04-21 23:49:02
 * @FilePath: /lesson32/sig/mysignal.cc
 * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
 */
#include <iostream>
#include <signal.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/wait.h>

using namespace std;

int main()
{
    int a=10;
    int b=0;
    a/=b;
    cout<<"a = "<<a<<endl;
    return 0;
}

// int main()
// {
//     pid_t id = fork();
//     if (id == 0)
//     {
//         int cnt = 500;
//         while (cnt)
//         {
//             cout << "I am a chid process,pid: " << getpid() << " ,cnt: " << cnt << endl;
//             sleep(1);
//             cnt--;
//         }
//         exit(1);
//     }
//     int status=0;
//     pid_t rid=waitpid(id,&status,0);
//     if(id==rid)
//     {
//         cout<<"child quit info,rid: "<<rid<<" exit code: "<<((status>>8)&0xff)<<
//         " ,exit sig: "<<((status&0x7f))<<" ,core dump: "<<((status>>7)&1)<<endl;
//         // ? & (0000 0000 ... 0001)
//     }
//     return 0;
// }

// void handler(int signum)
// {
//     cout<<"get a sig,num: "<<signum<<endl;
//     int n=alarm(5);
//     cout<<"time: "<<n<<endl;
// }

// int main()
// {
//     signal(14,handler);
//     int n=alarm(50);
//     while(1)
//     {
//         cout<<"proc is running,pid: "<<getpid()<<endl;
//         sleep(1);
//     }
//     return 0;
// }

// int main()
// {
//     char buffer[1024];
//     int n=1024;
//     n=read(4,buffer,sizeof(buffer));
//     printf("n=%d\n",n);
//     perror("read");
//     return 0;
// }

// int main()
// {
//     signal(11,handler);
//     cout<<"point error before"<<endl;
//     int *p=nullptr;//p指向0号地址
//     *p=100;//没有资格访问0号地址（权限问题/野指针问题）
//     cout<<"point error after"<<endl;
//     return 0;
// }

// int main()
// {
//     signal(8,handler);
//     cout<<"div before"<<endl;
//     // sleep(1);
//     int a=10;
//     a/=0;
//     cout<<"div after"<<endl;
//     // sleep(1);
//     return 0;
// }